Each pipe end has its own way to set up the transfer context. In the
regular file case, see ddddppppiiiippppeeee____ffffssssppppeeee____ggggeeeetttt____hhhhddddllll((((3333xxxx)))) and ddddppppiiiippppeeee____ffffssssppppeeee____sssseeeetttt____ccccttttxxxx((((3333xxxx))))....
For early access, only xfs file system supports data pipe.
ddddppppiiiippppeeeeSSSSttttoooopppp stops the transfer specified by _p_i_p_e_f_d and _t_r_a_n_s_f_e_r__i_d.
ddddppppiiiippppeeeeFFFFlllluuuusssshhhh returns only after all the pending transfers in a data pipe
are completed or when an error occurred during the transfer. It is
useful, for example, when the application wishes to close one pipe end
but is not sure whether the transfer is over.
ddddppppiiiippppeeeeSSSSttttaaaattttuuuussss returns the status of the transfer specified by _p_i_p_e_f_d and
_t_r_a_n_s_f_e_r__i_d. The potential values are:
DPIPE_TRANS_COMPLETE The transfer is completed successfully.
DPIPE_TRANS_PENDING The transfer is still pending.
DPIPE_TRANS_CANCELLED The transfer is cancelled. It's the result of
ddddppppiiiippppeeeeSSSSttttoooopppp(((())))....
DPIPE_TRANS_ERROR The transfer failed.
DDDDIIIIAAAAGGGGNNNNOOOOSSSSTTTTIIIICCCCSSSS
On success, ddddppppiiiippppeeeeSSSSttttaaaattttuuuussss returns the status value (which is always non-
negative); ddddppppiiiippppeeeeTTTTrrrraaaannnnssssffffeeeerrrr returns transfer id (always non negative); all
other routines return 0. On failure, all the routines return -1 and errno
is set to one of the following:
[EBADFD] The file descriptors is invalid.
[EINVAL] One or more of the parameters are invalid. [EOPNOTSUPP] The
operation is not supported on the system. [ENOMEM] Not enough
space for memory allocation.
FFFFIIIILLLLEEEESSSS
/usr/share/src/irix/examples/dpipe/src/dpcp.c is an example which copies